﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace EjercicioII
{
    class AsociacionMusical
    {
        private string nombre;
        private static int numMiembrosCoro;
        private static int numMiembrosOrquesta;
        private ArrayList musicos = new ArrayList(); ///almacena componentes de orquesta y coro

        public void imprimirDatos()
        {
            const int TAMANO_ARRAY = 4;
            int[] cuantosCantan;
            cuantosCantan = new int[TAMANO_ARRAY];
            Console.Write("Asociacion: ");
            Console.WriteLine(nombre);
            Console.Write("Miembros del coro: ");
            Console.WriteLine(numMiembrosCoro);
            Console.Write("Miembros de la orquesta: ");
            Console.WriteLine(numMiembrosOrquesta);
            Console.WriteLine("Listado de miembros");

            foreach (Musico item in musicos)
            {

                Identificable musico = (Identificable)item;
                if (musico.yTuCantas())
                {


                    Coralista musica = (Coralista)item;
                    musica.imprimirDatos();
                    cuantosCantan[musica.queCanta()]++;
                }
                else
                {
                    Instrumentista musica = (Instrumentista)item;
                    musica.imprimirDatos();
                }

            }
            Console.Write("El coro esta formado por ");
            for (int i = 0; i < TAMANO_ARRAY; i++)
            {
                string traduccionDeVoz;
                if (cuantosCantan[i] != 0)
                {
                    switch (i)
                    {
                        case 0:
                            traduccionDeVoz = "Coralista";
                            break;
                        case 1:
                            traduccionDeVoz = "Soprano";
                            break;
                        case 2:
                            traduccionDeVoz = "Contraalto";
                            break;
                        default:
                            traduccionDeVoz = "Tenor Bajo";
                            break;
                    }
                    
                    Console.Write(cuantosCantan[i] + " " + traduccionDeVoz + " ");
                    
                     
                }
            }
            Console.WriteLine(" ");

        }



        public void anadirMiembro(Musico mus)
        {
            musicos.Add(mus);
            Identificable musico = (Identificable)mus;
            if (musico.yTuCantas())
            {
                numMiembrosCoro++;
            }
            else
            {
                numMiembrosOrquesta++;
            }

        }
        public AsociacionMusical(string nombre)
        {
            this.nombre = nombre;
            numMiembrosCoro = 0;
            numMiembrosOrquesta = 0;

        }

    }
}
